<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        // 1.JS延迟加载的方式有哪些？（5）
        //  1、使用defer属性
        //  2、把js放在body的最后

        // 2.前端 JavaScript 中的 ECMAScript、DOM、BOM 的含义；（5）
        //ECMAScript：ECMA制定的一套标准
        //DOM:文本对象模型
        //BOM:浏览器对象模型

        // 3.JavaScript 的数据类型有哪些？（5）
        //String Number Boolean Undefined Null Symbol 
        //Array Object

        // 4.如何进行数据类型的判断？（5）
        //typeof (将要检测的数据)
        //将要检测的数据 instanceof 实例化对象
        //Object.prototype.toString.call(将要检测的数据)

        // 5.null 和 undefined 的区别？什么时候会得到 undefined？（5）
        //null表示的是一个空的对象，空的指针；而undefined表示的是一个声明了但是没有赋值的变量
        //当声明了变量但是没有赋值，会返回undefined；当函数没有返回值时，会返回undefined

        // 6.如何理解 null == undefined 返回 true，null === undefined 返回 false？（5）
        //在数据上，null和undefined都表示的是一个空的值，所以 == 返回的是true；
        //因为它们是不同的数据类型，所以 === 返回false

        // 7.使用 continue 或 break 终止循环时，两种方式的区别是？（5）
        //continue是结束当前的程序，执行下一个符合条件的程序；
        //break是结束当前的循环，即使循环内还有符合条件的也不再执行。

        // 8.如何判断字符串内是否包含指定字符？（5）
        //indexOf(要检测的字符) 如果没有检测到该字符，则返回-1
        //include(要检测的字符) 如果包含了该字符则返回true ，否则返回false

        // 9.请尽量列举出数组的方法，并且注明哪些方法会修改原数组，哪些不会；（5）
        //不会改变原数组：concat()连接数组 join()数组转字符串 slice()截取  indexof()从头检测 LastIndexof()从尾检测 include()包含 
        //会改变原数组：reverse()翻转数组 splice()截取、替换、删除 push()末端增加 pop()删除最后 shift()删除首项 unshift()在头部增加

        // 10. 请写出下面语句的输出结果：（5）
        var bar = true,
            number = 0;
        console.log(bar + 0); //1
        console.log(bar + "xyz"); //"truexyz"
        console.log(bar + true); // 2
        console.log(+true); //1
        console.log(!'bluej');//false
        console.log(number++);//0
        console.log(++number);//1
        console.log(number);//0

        // 11. 根据用户输入时间实现倒计时，输入格式错误时要有所提示（5）
        // window.prompt("请输入目标时间");
        // let endDate = Number(prompt("请输入大于当前时间的18位数的时间戳："));
        // let nowDate = Date.now();//获取当前时间戳
        // console.log(toString(nowDate));
        // console.log(toString(nowDate).length);//时间戳的长度
        // console.log(nowDate);//1631092919926

        // let restDate =endDate - nowDate;
        // let restS = parseInt(restDate / 1000);//剩余的秒数

        // if(endDate != null && endDate != "" && toString(endDate).length > toString(nowDate).length){

        //     function timeFn(endDate) {
        //         console.clear();
        //         console.log("距离时间结束还有"+ restS +"秒");
        //     }

        //     timer = setInterval(function () {
        //     timeFn(endDate);
        // }, 1000);

        // } else {
        //     alert("你输入的格式有误，请重新开始！")
        // }



        




        // 13.把下面数组成员排序打乱；（5）
        // var arr = [10, 20, 30, 40, 50, 60];
        // let newArr = [];
        // for(let i = 0; i < arr.length; i++) {
        //     let rdm = Math.floor(Math.random()*6);
        //     // console.log(rdm);
        //     if(newArr.indexOf(arr[rdm]) == -1){
        //         newArr.push(arr[rdm])
        //     } else {
        //         i--
        //     }
        // }
        // console.log(newArr);

        // 12.输出从小到大排序好的五个不重复的随机"素数",范围[10-58)；（10）
        //素数：num%1 == 0, num%num == 0;
        // let num = Math.random()*58
        
        // function rdmNum(min,max) {
        //     return Math.floor(Math.random()*(max - min) + min);
        // }
        // // console.log(rdmNum(10,58));
        // let num = [];
        // let urt = [];
        // for(let i = 1; i <= 5; i++){
        //     num = rdmNum(10,58);
        //     if(num % 1 == 0 && num % num == 0 && num % 2 != 0 && num % 3 != 0 &&num % 5 != 0 && urt.indexOf(num) == -1){
        //         urt.push(num)
        //     } else {
        //         i--;
        //     }
        // };
        // console.log(urt);

        // 14. 将多个数组进行去重合并；（10）
        // var arr1 = [1, 2, 3],
        //     arr2 = [2, 3, 4, 5];
        // let arr3 = [];
        // arr3 = arr1.concat(arr2);
        // // console.log(arr3);
        // let newArr = [];
        // arr3.filter(function(current,index) {
        //     if(newArr.indexOf(current) == -1) {
        //         newArr.push(current)
        //     }
        //     return newArr;
        // });
        // console.log(newArr);
        

        // 15. 找出数组 arr=[1, 2, 3, "melon", 4, "melon", 2, 4, "melon"] 中重复出现过的元素,
        //并用数组将重复元素装起来输出,并且统计每个元素出现的次数（10）
        // arr=[1, 2, 3, "melon", 4, "melon", 2, 4, "melon"]
        // let newArr = [];
        // for(let i = 0; i < arr.length; i++) {
        //     if(arr.indexOf(arr[i]) != arr.lastIndexOf(arr[i])){
        //         newArr.push(arr[i])
        //     }
        // }
        // console.log(newArr);
        // let arr1 = [],
        //     arr2 = [],
        //     arr3 = []
        // newArr.forEach(function(current , index) {
        //     if(current == 2) {
        //         arr1.push(current)
        //         console.log("2出现的次数：",arr1.length);
        //     } else if(current == 4) {
        //         arr2.push(current)
        //         console.log("4出现的次数：",arr1.length);
        //     } else {
        //         arr3.push(current)
        //         console.log("melon出现的次数：",arr1.length);
        //     }
        // })


        // 16. 找出数组中年龄小于18岁的女生的信息重新组成新的数组,并且将她们count变为现有的平方（10）
        var arr = [{
                name: "111",
                sex: "boy",
                age: 18,
                count: 20
            },
            {
                name: "222",
                sex: "girl",
                age: 17,
                count: 30
            },
            {
                name: "333",
                sex: "boy",
                age: 16,
                count: 40
            },
            {
                name: "444",
                sex: "girl",
                age: 15,
                count: 50
            },
            {
                name: "555",
                sex: "boy",
                age: 20,
                count: 60
            },
            {
                name: "666",
                sex: "girl",
                age: 13,
                count: 70
            },
            {
                name: "777",
                sex: "boy",
                age: 14,
                count: 80
            }
        ]
        // let newArr = [];
        // arr.map(function(current , index) {
        //     console.log(current["age"]);
        //     if(current["age"] < 18) {
        //         newArr.push(current);
        //         current["count"] *= current["count"];
        //     }
        //     return newArr;
        // })
        // console.log(newArr);





    </script>
</body>

</html>